package cn.abcsys.cloud.devops.web.dao;

import java.sql.SQLException;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import cn.abcsys.cloud.devops.web.entity.User;



/**
 * 用户信息接口
 * @author mayunhao
 *
 */
public interface UserMapper {
	/**
	 * 查询用户信息
	 * @param userId
	 * @return
	 */
	public User getUser(Integer userId);
	/**
	 * 查询用户信息
	 * @param userId
	 * @return
	 */
	public List<User> getUsers();
	/**
	 * 新增用户
	 * @param user
	 * @return
	 */
	public int insert(User user);
	/**
	 * 删除用户
	 * @param user
	 * @return
	 */
	public void deleteUserById(Integer userId) throws SQLException;
	/**
	 * 修改用户信息
	 * @param user
	 * @return
	 */
	public int updateUserByUserId(User user)throws SQLException;
	/**
	 * 通过ldap uid获取用户信息
	 * @param uid
	 * @return
	 */
	public User getUserByUid(String uid);
	/**
	 * 通过ldap uid更新用户信息
	 * @param user
	 * @return
	 * @throws SqlException
	 */
	public int updateUserByUid(User user) throws SQLException;
	
	/**
	 * 查询所有的环境管理员
	 * @param envId
	 * @return
	 */
	public List<User> getEnvRoleUser();
	
	/**
	 * 查看环境下的普通用户
	 * @param envId
	 * @return
	 */
	public List<User> getOrdinaryleUser(@Param("envId") Integer envId);
	
	/**
	 *  查看环境下的项目管理员
	 * @param envId
	 * @return
	 */
	public List<User> getProjectRoleUser(@Param("envId") Integer envId);
	
	/**
	 * 删除用户项目关联表
	 * @param userId
	 * @throws SQLException
	 */
	public void deleteUserProject(@Param("userId") Integer userId) throws SQLException;
	
	/**
	 * 分页查询用户信息
	 * @param map
	 * @return
	 */
	public List<User> getUserList(Map<?,?> map);
	
	/**
	 * 检查用户密码的正确性
	 * @param user
	 * @return
	 */
	public User checkUsers(User user);
	
	/**
	 * 冻结用户
	 * @return
	 * @throws SQLException
	 */
	public int lockUserByid(Integer userId) throws SQLException;
	
	/**
	 * 根据用户编号和环境查询详细信息
	 * @return
	 */
	public Map<String,Object> getUserDetail(Map<String,Integer> map) throws SQLException;

	/**
	 * 查询环境角色项目固定的用户
	 * @param map
	 * @return
	 */
	public List<User> getSelectUsers(Map<String,Object> map);
}
